Java Web 基础之Servlet概念详解(Servlet是什么?主要功能?基础重点运用?)

您所在的位置:网站首页 javaweb ppt Java Web 基础之Servlet概念详解(Servlet是什么?主要功能?基础重点运用?)

Java Web 基础之Servlet概念详解(Servlet是什么?主要功能?基础重点运用?)

#Java Web 基础之Servlet概念详解(Servlet是什么?主要功能?基础重点运用?)| 来源: 网络整理| 查看: 265

目录 一、Servlet是什么1.1 Servlet1.2 Servlet API 二、Servlet的主要功能2.1 Servlet的简单运用流程展示2.2 Servlet API常用功能概览2.2.1 Servlet2.2.2 GenericServlet2.2.3HttpServlet2.2.4 ServletRequest和ServletResponse2.2.5 ServletConfig和ServletContext2.2.5 RequestDispatcher和Filter 三、JSP也是一个Servlet类3.1JSP(JavaServer Pages)的与众不同3.2 Servlet的缺点和JSP基本用法3.2.1指令3.2.2脚本元素3.2.3动作3.2.4无需部署直接访问 求支持

一、Servlet是什么 1.1 Servlet

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,泛指用 Java编写的服务器端程序。在编程过程中也指一切 实现了Servlet接口的类(约定以Servlet结尾命名)。

1.2 Servlet API

JAVA Servlet 作为JAVA EE中Web开发的重要技术之一,也是理解各种Java Web开发框架的重要基础,接下来看一下Servlet-api中主要包含哪些结构:

javax.servlet -作为servlet API的基础,包含Servlet类基类和Servlet与Servlet容器的契约javax.servlet.annotation -包含标注信息,提供简单部署的方式javax.servlet.descrptor -包含提供程序化登录Web应用程序的配置信息的类型javax.servlet.http -包含HttpServlet,Servlet对Http协议的变体

在这里插入图片描述

二、Servlet的主要功能 2.1 Servlet的简单运用流程展示

Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为:

1. 客户端发送请求至服务器端 2. 服务器将请求信息发送至 Servlet 3. Servlet 生成响应内容并将其传给服务器,响应内容动态生成 4. 服务器将响应返回给客户端

Servlet 看起来像是通常的 Java 程序。Servlet 导入特定的属于 Java Servlet API 的包。 一个 Servlet 就是 Java 编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然 Servlet 可以对任何类型的请求产生响应,但通常只用来扩展 Web 服务器的应用程序。 在这里插入图片描述 下面是一个简单实现的代码:

import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; import java.io.PrintWriter; @WebServlet(urlPatterns = "/myservlet")//注解部署-javax.servlet.annotation部分 public class MyServlet implements Servlet {//Servlet属于javax.servlet核心部分 @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } //主要的功能函数-实现Request请求解析,以及进行处理和响应请求 @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { String message=req.getParameter("message"); res.setContentType("text/html"); PrintWriter out=res.getWriter(); out.print("MyServlet Return Page"); out.print("

"+message+"

"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } } 2.2 Servlet API常用功能概览

简单的类接口和功能概括如下图:(其中HttpServlet在javax.servlet.http中,其余在javax.servlet中) 在这里插入图片描述

2.2.1 Servlet

接口定义了如下5种方法:

//初始化,传入Tomcat实例化的一个ServletConfig进行配置 void init(ServletConfig config) throws ServletException //主要功能函数-传入Tomcat转发封装好的一个ServletRequest实例, //和封装好的出口ServletResponse输出即可 void service(ServletRequest req,ServletResponse res)throws ServletException,IOException //在Servlet类销毁时调用,输出必要信息 void destory() //以下略 String getServletInfo() ServletConfig getServletConfig() 2.2.2 GenericServlet

该类是对于Servlet接口的简单实现: 由于直接实现Servlet接口需要实现5个方法,但是一般我们只管service方法,为了减少不必要的实现,使用GenericServlet对其进行简单实现。 继承GenericServlet的类只需要重写需要用到的方法即可。

2.2.3HttpServlet

其作为更有效的扩展,是面对Http协议的专业Servlet封装: 对于传入的ServletRequest,该类会自动解析其Http包,然后调用doGet/doPost/doHead等方法,因此在实现继承该类时,只需要实现相应的方法即可,具体如下:

import *; @WebServlet(urlPatterns = {"/books"}) public class BookControServlet extends HttpServlet { private static final int serialVersionUID=-123; @Override public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException{ List books=new ArrayList(); books.add(new Book("isbn-1","YOUR NAME",120)); books.add(new Book("isbn-2","MY NAME",100)); books.add(new Book("isbn-3","HIS NAME",60)); books.add(new Book("isbn-4","HER NAME",250)); //给Request添加一些属性 req.setAttribute("books",books); req.setAttribute("now",new Date()); //转发到另外一个Servlet处理 RequestDispatcher rd=req.getRequestDispatcher("/books.jsp"); rd.forward(req,res); } } 2.2.4 ServletRequest和ServletResponse

作为Servlet类(泛指)处理请求和输出的窗口 ServletRequest类包含请求体的所有消息:

+getContentLength():int//返回请求主体字节长度,未知返回-1 +getContentType():String//返回请求主体类型 +getProtocol():String//返回HTTP请求协议名 +getParameter(String):String//最常用,返回请求参数值Get请求参数在url有显示,见上(简单实现)

ServletResponse类包含相应请求的方式:

+setContentType(String)//设置响应格式,如"text/html" +getWriter():java.io.PrintWriter//返回输出接口,具体见上(简单实现) 2.2.5 ServletConfig和ServletContext

ServletConfig作为Servlet类实例时的一个必要的配置信息,由服务器(容器)根据相关配置创建一个实例传入init(ServletConfig),实例如下:

import javax.servlet.*; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import java.io.IOException; import java.io.PrintWriter; @WebServlet(name = "MyServlet", urlPatterns = "/myservlet", initParams = { @WebInitParam(name="config_var_1",value = "value_1"), @WebInitParam(name="config_var_2",value = "value_2") }//初始配置 ) public class MyServlet extends GenericServlet { @Override public void service(ServletRequest req,ServletResponse res)throws ServletException,IOException{ ServletConfig servletconfig = getServletConfig(); System.out.println(servletconfig.getInitParameter("config_var_1")); System.out.println(servletconfig.getInitParameter("config_var_2")); } }

在这里插入图片描述 ServletContext则是所有Servlet类的容器信息,包含一个Web应用内所有Servlet的注册信息,在高级操作中可以通过该类实现动态注册Servlet类。(初级略)

2.2.5 RequestDispatcher和Filter

在这里插入图片描述其中Filter需要单独部署,由设计者单独实现一个Filter类,并部署相关拦截条件。 而RequestDispatcher则直接使用即可,见上(简单实现)

三、JSP也是一个Servlet类 3.1JSP(JavaServer Pages)的与众不同

一个JSP页面如下:

$Title$ body { /*EL表达式*/ background-color: ${cookie.color.value}; } BOOKS SHOW hello World!!!


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3